﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotas.Core;
using GestorDeFlotasDesktop.GD1C2012DataSetTableAdapters;

namespace GestorDeFlotasDesktop.AbmReloj
{
    public partial class DatosReloj : FormDatosBase
    {

        private Reloj unReloj { get; set; }

        public DatosReloj(ModoAbm modoAbm)
            : base(modoAbm)
        {
            InitializeComponent();
            
            popularMarcas();            
        }

        public DatosReloj(ModoAbm modoAbm, Reloj reloj)
            : this(modoAbm)
        {
            this.unReloj = reloj;
        }
        

        private void DatosReloj_Load(object sender, EventArgs e)
        {
            if (this.modoAbm == ModoAbm.Alta)
            {
                this.unReloj = new Reloj();
            }
            else if (this.modoAbm == ModoAbm.Modificacion)
            {
                PopularControles(this.unReloj);
            }
        }

        private void PopularControles(Reloj reloj)
        {

            if (this.unReloj == null) this.unReloj = new Reloj();
            textBox_modelo.Text = Convert.ToString(reloj.modelo);
            dateTimePicker1.Value = reloj.fechaDeVerificacion;
            //textBox_fech_verificacion.Text = Convert.ToString(reloj.fechaDeVerificacion);
            textBox_nro_serie.Text = Convert.ToString(reloj.numeroDeSerie);
            comboBox_marcas.Text = Convert.ToString(reloj.marca);
            check_activo.Checked = reloj.esActivo;
        }



        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void boton_crear_Click(object sender, EventArgs e)
        {
           List<string> camposInvalidos = ChequearCamposObligatorios();
            if (!(camposInvalidos.Count > 0))
            {
                PopularReloj();
                if (this.modoAbm == ModoAbm.Alta)
                {
                    try
                    {
                        unReloj.Crear();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }
                else if (this.modoAbm == ModoAbm.Modificacion)
                {
                    unReloj.Modificar();
                }
                
                this.DialogResult = DialogResult.OK;
            }
            else
            {
                MostrarMensajeCamposObligatorios(camposInvalidos);
            }

        }

        private void PopularReloj()
        {
            /*            
             */
            unReloj.modelo = this.textBox_modelo.Text;
            unReloj.numeroDeSerie = this.textBox_nro_serie.Text;
            ItemCombo optionSelected = (ItemCombo)this.comboBox_marcas.SelectedItem;
            if (optionSelected != null) unReloj.marcaCodigo = optionSelected.Codigo; 
            unReloj.esActivo = this.check_activo.Checked;
            unReloj.fechaDeVerificacion = this.dateTimePicker1.Value;
        }

        private List<string> ChequearCamposObligatorios()
        {
            List<string> camposInvalidos = new List<string>();
            if (string.IsNullOrEmpty(this.textBox_modelo.Text))
            {
                camposInvalidos.Add("Modelo");
            }

            if (string.IsNullOrEmpty(this.textBox_nro_serie.Text))
            {
                camposInvalidos.Add("Nro de Serie");
            }

            if (string.IsNullOrEmpty(this.comboBox_marcas.Text))
            {
                camposInvalidos.Add("Marca");
            }

            return camposInvalidos;
        }

        private void popularMarcas() {
            GD1C2012DataSet.TL_Marcas_RelojesDataTable marcasDT = new GD1C2012DataSet.TL_Marcas_RelojesDataTable();
            TL_Marcas_RelojesTableAdapter marcas = new TL_Marcas_RelojesTableAdapter();
            marcas.Fill(marcasDT);

            foreach (var item in marcasDT)
            {
                this.comboBox_marcas.Items.Add(new ItemCombo(item.marca_codigo, item.marca_nombre));
            }
        }

    }
}
